#include "displaylist.h"
#include <assert.h>
#include <GL/glut.h>

DisplayList::DisplayList() : id(glGenLists(1)), 
                            valido(id != 0),
                            inicializado(false) {}

DisplayList::~DisplayList() {
    if(valido)
        glDeleteLists(id, 1);
}

void DisplayList::inicializar() {
    assert(!inicializado);

    if(valido) {
        glNewList(id, GL_COMPILE);
        ejecucion();
        glEndList();
    }

    inicializado = true;
}

void DisplayList::dibujar() const {
    assert(inicializado);

    if(valido)
        glCallList(id);
    else
        ejecucion();
}

bool DisplayList::esValido() const {
    return valido;
}
